// 配置基础路径
axios.defaults.baseURL = "http://bugtracker.itsource.cn:8080/"
// 将axios转成vue的属性
Vue.prototype.$http = axios;


// 解析URL地址获取参数对象的公共函数工具
function parseUrlParams2Obj(url){// http://bugtracker.itsource.cn/callback.html?code=061IduGa1839qC02jlIa1NmHxX1IduGX&state=1
    //获取请求参数
    let paramStr = url.substring(url.indexOf("?")+1);//code=021FdXFa14mYlA016OGa1L3R4X0FdXFO&state=1
    let paramStrs = paramStr.split("&");//[code=021FdXFa14mYlA016OGa1L3R4X0FdXFO,state=1]
    let paramObj = {};
    for(let i=0;i<paramStrs.length;i++){
        let paramName = paramStrs[i].split("=")[0];//code
        let paramValue = paramStrs[i].split("=")[1];//021FdXFa14mYlA016OGa1L3R4X0FdXFO
        paramObj[paramName] = paramValue;// 动态给对象设置属性和值
    }
    return paramObj;
}




// 1.配置路由拦截器，作用是判断当前用户是否登录如果没有那么跳转到login页面
// 1.1.获取到用户的访问路径
let url = location.href;
if (url.indexOf('login.html') === -1 && url.indexOf('register.html') === -1
    && url.indexOf('index.html') === -1 && url.indexOf('binder.html') === -1
    && url.indexOf('callback.html') === -1) {
    // 需要从localstorage中获取用户数据
    let user = localStorage.getItem("logininfo")
    if (!user) {
        localStorage.removeItem('logininfo');
        localStorage.removeItem('token');
        location.href = "/login.html"
    }
}


//2.配置axios前置拦截器，作用是让所有axios请求携带token，后台需要token校验是否登录
axios.interceptors.request.use(config=>{
    console.log("222222222");
    // 2.1.从缓存中获取到token
    let token =  localStorage.getItem("token");
    // 2.2.如果token不为null，那么设置到请求头中，此处哪怕为null，我们也不进行处理，因为后台会进行拦截
    if(token){
        config.headers['token']=token;
    }
    // 2.3.放行
    return config;
},error => {
    Promise.reject(error);
})

//3.配置axios后置拦截器，作用是为了得到后端的拦截器响应结果
//  前端需要知道用户是否登录，如果响应是success=false&resultObj=noLogin那么说明用户未登录，直接跳转到登录页面
axios.interceptors.response.use(result=>{
    console.log("333333333");
    // 3.1.获取到后端的响应结果
    let data = result.data;
    // 3.2.判断如果后端响应是success=false&resultObj=noLogin，那就说明在后端拦截器中被拦截下来了，那么跳转到登录页面
    if(!data.success && data.resultObj==="noLogin"){
        // 跳转登录页面
        location.href = "/login.html"
    }
    // 3.3.放行
    return result;
},error => {
    Promise.reject(error);
})




/**
 * 路由拦截器 我们后面会学 先注释掉
 */
// // 获取当前请求的url
// let url = location.href;
// if (url.indexOf('login.html') === -1 && url.indexOf('register.html') === -1
//     && url.indexOf('index.html') === -1 && url.indexOf('binder.html') === -1
//     && url.indexOf('callback.html') === -1) {
//     // 需要从localstorage中获取用户数据
//     let user = localStorage.getItem("logininfo")
//     if (!user) {
//         localStorage.removeItem('logininfo');
//         localStorage.removeItem('token');
//         location.href = "/login.html"
//     }
// }
//
// //2.配置axios前置拦截器，作用是让所有axios请求携带token，后台需要token校验是否登录
// axios.interceptors.request.use(config => {
//     // 2.1.从缓存中获取到token
//     let token = localStorage.getItem("token");
//     // 2.2.如果token不为null，那么设置到请求头中，此处哪怕为null，我们也不进行处理，因为后台会进行拦截
//     if (token) {
//         config.headers['token'] = token;
//     }
//     // 2.3.放行
//     return config;
// }, error => {
//     Promise.reject(error);
// })
//
// //3.配置axios后置拦截器，作用是为了得到后端的拦截器响应结果
// //  前端需要知道用户是否登录，如果响应是success=false&resultObj=noLogin那么说明用户未登录，直接跳转到登录页面
// axios.interceptors.response.use(result => {
//     // 3.1.获取到后端的响应结果
//     let data = result.data;
//     // 3.2.判断如果后端响应是success=false&resultObj=noLogin，那就说明在后端拦截器中被拦截下来了，那么跳转到登录页面
//     if (!data.success && data.resultObj === "noLogin") {
//         // 跳转登录页面
//         // router.push({path: '/login'});
//         location.href = "/login.html"
//     }
//     // 3.3.放行
//     return result;
// }, error => {
//     Promise.reject(error);
// })
//
// // 解析URL地址获取参数对象的公共函数工具
// function parseUrlParams2Obj(url) {// http://bugtracker.itsource.cn/callback.html?code=061IduGa1839qC02jlIa1NmHxX1IduGX&state=1
//     //获取请求参数
//     let paramStr = url.substring(url.indexOf("?") + 1);//code=021FdXFa14mYlA016OGa1L3R4X0FdXFO&state=1
//     let paramStrs = paramStr.split("&");//[code=021FdXFa14mYlA016OGa1L3R4X0FdXFO,state=1]
//     let paramObj = {};
//     for (let i = 0; i < paramStrs.length; i++) {
//         let paramName = paramStrs[i].split("=")[0];//code
//         let paramValue = paramStrs[i].split("=")[1];//021FdXFa14mYlA016OGa1L3R4X0FdXFO
//         paramObj[paramName] = paramValue;// 动态给对象设置属性和值
//     }
//     return paramObj;
// }